import java.util.ArrayList;
import java.util.List;
import java.util.PriorityQueue;

/**
 * Created by L.jp
 * Description:
 * User: 86189
 * Date: 2021-10-16
 * Time: 20:40
 */
public class Stone {
    public int lastStoneWeight(int[] stones) {
        //PriorityQueue默认是小堆，所以要改变参数
        PriorityQueue<Integer> maxHeap = new PriorityQueue<>((a, b) -> (b - a));
        for (int stone : stones) {
            maxHeap.offer(stone);//不用自己调整，他会自动调整成大堆
        }
        //判断大堆是否只剩一个元素
        while (maxHeap.size() > 1) {
            //因为大堆，所以弹出两次就是两个最大的元素
            int a = maxHeap.poll();
            int b = maxHeap.poll();
            if (a!=b) {
                maxHeap.offer(Math.abs(a - b));//这里不管a>b还是b>a,只要返回差值绝对值即可
            }
            //a==b时，不产生任何新的石头，相当于两个元素没有了，不做任何操作

        }
        return maxHeap.isEmpty() ? 0 : maxHeap.poll();//所剩一个元素时，弹出它，没有元素返回0；
    }
}
